<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>
    
    // 深拷贝：拷贝值（内容）
    var str = "hello";  // 在栈中创建了一个区域，叫str，值为hello
    var str2 = str;     // 在栈中创建了一个区域，叫str2，值拷贝了str的内容
    str2 = "world";     // 修改了str2的内容
    console.log(str);
    console.log(str2);


    // 浅拷贝：拷贝地址
    // 在栈中创建了一个区域，叫obj
    // 在堆中创建了一个区域，存储了{name:"admin"}的数据；将堆的地址存储在，叫obj的栈中
    var obj = {name:"admin"};
    // 在栈中创建了一个区域，叫obj2
    // 拷贝了叫obj的栈的地址
    var obj2 = obj;
    // 修改了obj2中的地址指向的数据（obj2的地址和obj的地址，是同一个地址）
    obj2.name = "root";
    console.log(obj);
    console.log(obj2);

    console.log("---------------")

    // 通过遍历实现的深拷贝
    var foo1 = {
        name:"admin",
        age:18,
        sex:"男"
    };
    var foo2 = {};
    // 解析之后拷贝内部的值
    // foo2.? = foo1.?;

    // for-in语句：用来遍历非数组对象
    for(var i in foo1){
        // console.log(i)
        // console.log(foo1[i])
        foo2[i] = foo1[i];
    }

    foo2.name = "root";

    console.log(foo1);
    console.log(foo2);



</script>
</html>